前兩篇我們介紹了如何在 Go 對 MySQL 和 Scylla 做操作,而這兩個皆為較具規模的儲存引擎,而如果你想要做快取,資料只是 key-value 的格式,那你就無須用到前兩個資料庫,可以使用 Redis 來達到需求,本片就要來介紹 Go 語言與 redis 的搭配使用。
這裡一樣用 docker 起一個 redis資料庫,
$ docker run --name redis-lab -p 6379:6379 -d redis
docker 真的是很方便的好東西,這樣簡簡單單就可以建置環。
Go 語言,也有支援 redis 操作的第三方套件,這邊是使用 go-redis 套件,這便先仔入好套件,
$ go get github.com/go-redis/redis
這裡建立連線很簡單,應為在使用 docker 建立 redis 時,已經有 port-forward 到本機
的6379 port 了,所以 Addr 填入 localhost:6379:
c := redis.NewClient(&redis.Options{
Addr: "localhost:6379",
Password: "",
DB: 0,
})
這邊先 set 一筆資料,set 就好比 insert ,只要設定好一個 key 以及相對的 value,最後在設定資料過期的時間(不想讓資料過期就設為0) :
err := c.Set("user", "JC", 1000).Err() // => SET key value,1000 代表過期秒數,若不想設定,則帶入0,就不會過期
if err != nil {
panic(err)
}
再來就是 get 一筆資料,get 就好比 select,帶入自己想要查詢的 key,就會得到相對應的 value:
val, err := c.Get("user").Result() // Get value by key
if err != nil {
panic(err)
}
fmt.Println("user:", val)
再來如果帶入不存在的的 key 值,就會直接 panic 掉。
刪除則是用 Del,你可以執行以下程式,在用 Get 來確認是否能取得到值,如果取不到則是已經不存在該 key 值:
val, err := c.Del("user").Result() // Del value by key
if err != nil {
panic(err)
}
fmt.Println("user:", val)
今天帶來 Go 語言與 redis 的搭配使用,適合用在暫存以及快取型態的資料,感謝今天的閱讀,希望對你有幫助!